# gazelle:prefix k8s.io/test-infra
# gazelle:proto disable
# gazelle:exclude vendor/k8s.io/code-generator/_examples/
# gazelle:exclude hack
# gazelle:exclude node_modules

load("@io_k8s_repo_infra//defs:run_in_workspace.bzl", "workspace_binary")
load("@io_bazel_rules_go//go:def.bzl", "nogo")

workspace_binary(
    name = "go",
    cmd = "@go_sdk//:bin/go",
)

nogo(
    name = "nogo_vet",
    config = "nogo_config.json",
    visibility = ["//visibility:public"],
    # These deps enable the analyses equivalent to running `go vet`.
    # Passing vet = True enables only a tiny subset of these (the ones
    # that are always correct).
    # You can see the what `go vet` does by running `go doc cmd/vet`.
    deps = [
        "@org_golang_x_tools//go/analysis/passes/asmdecl:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/assign:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/atomic:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/bools:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/buildtag:go_tool_library",
        # cgocall appears to be confused by github.com/mattn/go-sqlite3 and fails
        # even when configured not to run. Given we don't use cgocall much, skip
        # it for now.
        # "@org_golang_x_tools//go/analysis/passes/cgocall:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/composite:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/copylock:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/httpresponse:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/loopclosure:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/lostcancel:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/nilfunc:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/printf:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/shift:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/stdmethods:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/structtag:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/tests:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/unreachable:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/unsafeptr:go_tool_library",
        "@org_golang_x_tools//go/analysis/passes/unusedresult:go_tool_library",
    ],
)

workspace_binary(
    name = "update-minor",
    args = [
        "get",
        "-u",
    ],
    cmd = "@go_sdk//:bin/go",
)

workspace_binary(
    name = "update-patch",
    args = [
        "get",
        "-u=patch",
    ],
    cmd = "@go_sdk//:bin/go",
)

workspace_binary(
    name = "gofmt",
    cmd = "@go_sdk//:bin/gofmt",
)

workspace_binary(
    name = "golint",
    cmd = "@com_github_golang_lint//golint",
)

filegroup(
    name = "package-srcs",
    srcs = glob(
        ["**"],
        exclude = [
            "bazel-*/**",
            "node_modules/**",
            ".git/**",
            "*.db",
            "*.gz",
        ],
    ),
    visibility = ["//visibility:private"],
)

filegroup(
    name = "all-srcs",
    srcs = [
        ":package-srcs",
        "//boskos:all-srcs",
        "//config:all-srcs",
        "//def:all-srcs",
        "//experiment:all-srcs",
        "//gcsweb:all-srcs",
        "//gencred:all-srcs",
        "//ghproxy:all-srcs",
        "//gopherage:all-srcs",
        "//greenhouse:all-srcs",
        "//hack:all-srcs",
        "//images/builder:all-srcs",
        "//images/krte:all-srcs",
        "//images/kubekins-e2e:all-srcs",
        "//jenkins:all-srcs",
        "//jobs:all-srcs",
        "//kettle:all-srcs",
        "//kubetest:all-srcs",
        "//label_sync:all-srcs",
        "//linkcheck:all-srcs",
        "//logexporter/cmd:all-srcs",
        "//maintenance/migratestatus:all-srcs",
        "//metrics:all-srcs",
        "//pkg/benchmarkjunit:all-srcs",
        "//pkg/flagutil:all-srcs",
        "//pkg/genyaml:all-srcs",
        "//pkg/ghclient:all-srcs",
        "//prow:all-srcs",
        "//releng:all-srcs",
        "//robots/commenter:all-srcs",
        "//robots/coverage:all-srcs",
        "//robots/issue-creator:all-srcs",
        "//robots/pr-creator:all-srcs",
        "//robots/pr-labeler:all-srcs",
        "//scenarios:all-srcs",
        "//testgrid:all-srcs",
        "//triage:all-srcs",
        "//velodrome:all-srcs",
    ],
    tags = ["automanaged"],
    visibility = ["//visibility:public"],
)

filegroup(
    name = "test-infra-README",
    srcs = ["README.md"],
    visibility = ["//visibility:public"],
)

exports_files([
    "tsconfig.json",
    "go.mod",
    "go.sum",
])

platform(
    name = "rbe_with_network",
    parents = ["@rbe_default//config:platform"],
    remote_execution_properties = """
      properties: {
        name: "dockerNetwork"
        value: "standard"
      }
      {PARENT_REMOTE_EXECUTION_PROPERTIES}
    """,
)
